package ss.pku.jsa.type.constraint.solver;

import ss.pku.jsa.type.inference.JqualPlugin;
import ss.pku.jsa.type.inference.Qualifier;

public class Native {
	static {
		if (JqualPlugin.banshee)
			System.loadLibrary("jqual_banshee");
		else
			System.loadLibrary("jqual");
	}

	public static native void initCQual(String paramString1,
			String paramString2, boolean paramBoolean1, boolean paramBoolean2,
			int paramInt1, int paramInt2);

	public static native String finishCQual();

	public static native void resetLibQual();

	public static native void setPolyFlag(boolean paramBoolean);

	public static native int getMaxEnum();

	public static native void register_messages(String[] paramArrayOfString);

	public static native long getpid();

	public static native void profile();

	public static native int makeQvar(String paramString, int paramInt,
			boolean paramBoolean1, boolean paramBoolean2);

	public static native boolean variableQual(int paramInt);

	public static native boolean constantQual(int paramInt);

	public static native int findQual(String paramString);

	public static native int signQual(int paramInt);

	public static native int signQual(String paramString);

	public static native int levelQual(int paramInt);

	public static native String nameQual(int paramInt);

	public static native void setQualName(int paramInt, String paramString);

	public static native void getQualifierPath(int paramInt);

	public static native void makeQvarGlobal(int paramInt, boolean paramBoolean);

	public static native void makeQvarPreferred(int paramInt,
			boolean paramBoolean);

	public static native void mkeqQual(int paramInt1, int paramInt2,
			int paramInt3, int paramInt4);

	public static native void mkleqQual(int paramInt1, int paramInt2,
			int paramInt3, int paramInt4);

	public static native void mkeqQualGated(int paramInt1, int paramInt2,
			int paramInt3, int paramInt4, int paramInt5);

	public static native void mkleqQualGated(int paramInt1, int paramInt2,
			int paramInt3, int paramInt4, int paramInt5);

	public static native void mkleqInst(int paramInt1, int paramInt2,
			int paramInt3, int paramInt4, int paramInt5, int paramInt6);

	public static native int allocLocation();

	public static native int allocQGate(boolean paramBoolean1,
			boolean paramBoolean2);

	public static native void addQualToGate(int paramInt1, int paramInt2,
			boolean paramBoolean);

	public static native void qualGateSetAll(int paramInt, boolean paramBoolean);

	public static native long getLineFromLocation(int paramInt);

	public static native long getFilePositionFromLocation(int paramInt);

	public static native String getFileNameFromLocation(int paramInt);

	public static native void setLineForLocation(int paramInt, long paramLong);

	public static native void setFilePositionForLocation(int paramInt,
			long paramLong);

	public static native void setFileNameForLocation(int paramInt,
			String paramString);

	public static native void getInferredQualifiers(Qualifier paramQualifier);

	public static native boolean leqQual(int paramInt1, int paramInt2);

	public static native boolean mayLeqQual(int paramInt1, int paramInt2);

	public static native boolean csLeqQual(int paramInt1, int paramInt2);

	public static native boolean csMayLeqQual(int paramInt1, int paramInt2);

	public static native void experiment();
}
